package org.jeecg.modules.factor.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;


import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.api.DTO.EmissionFactorDTO;
import org.jeecg.modules.api.DTO.EmissionFactorQueryDTO;
import org.jeecg.modules.api.DTO.PrivateFactorQueryDTO;
import org.jeecg.modules.api.VO.EmissionFactorDescribeVO;
import org.jeecg.modules.api.VO.EmissionFactorQueryVO;
import org.jeecg.modules.api.VO.EmissionFactorVO;
import org.jeecg.modules.api.entity.CyEmissionFactor;
import org.jeecg.modules.api.entity.CyIndustryCategory;
import org.springframework.web.servlet.ModelAndView;


import java.util.List;
import java.util.Map;

/**
 * @Description: 碳排因子
 * @Author: jeecg-boot
 * @Date:   2024-11-01
 * @Version: V1.0
 */
public interface ICyEmissionFactorService extends IService<CyEmissionFactor> {

    //改变发布状态
    void changeStatus(String id, String state );

    //新增碳排因子
    void add(EmissionFactorDTO emissionFactorDTO);

    String addEmissionByCarbonCheck(EmissionFactorDTO emissionFactorDTO);

    //查看碳排因子详细信息
    EmissionFactorVO listInfo(String id);

    //批量获取碳排因子详细信息
    List<EmissionFactorVO> batchListInfo(List<String> idList);


    List<CyEmissionFactor> batchGetFactorInfo(List<String> idList);

    //查询热门搜索因子
    List<EmissionFactorQueryVO> topSearchFactor(String token, Integer SearchNum);

    //不同行业类型徽标数
    Map<String,Integer> IndustryTypeBadge();

    //查询最新发布因子
    List<EmissionFactorQueryVO> SelectNewPublishFactor(String token,Integer Number);

    //查询浏览记录
    List<EmissionFactorQueryVO> historyRecord();

    //分页列表查询
    Result<?> queryPageList(EmissionFactorQueryDTO emissionFactorQueryDTO, Integer pageNo, Integer pageSize, String token);

    //管理平台-碳排因子-分页列表查询
    Result<?> emissionQueryPageList(EmissionFactorQueryDTO emissionFactorQueryDTO, Integer pageNo, Integer pageSize);


    //内部使用的分页列表查询（碳排因子库和组织因子库中调用的接口）
    IPage<EmissionFactorQueryVO> privateQueryPageList(PrivateFactorQueryDTO privateFactorQueryDTO, Integer pageNo, Integer pageSize);

    //批量查询碳排因子使用说明对象
    List<EmissionFactorDescribeVO> describeList(List<String> idList);

    //碳排因子逻辑删除
    void logicDeleteById(String id);

    //查询碳排因子创建人接口
    List<String> getCreatePeople();

    void updateEmissionFactor(EmissionFactorDTO emissionFactorDTO);

    //查询碳排因子行业分类
    List<CyIndustryCategory> industryCategory();

    void crawlData();
}
